﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Region.Forms
{
    public partial class KontObjectEditForm : Form
    {
        Kont.KontObject m_kontObject;
        Kont m_kont;
        Engine m_engine;
        Int32 m_KontObjectID;
        Dictionary<Int32, String> m_Raions;
        Dictionary<Int32, String> m_KontDirect;
        Dictionary<Int32, String> m_KontDirectZPP;
        Dictionary<Int32, Engine.TOkvedInfo> m_OKVED;
        bool save()
        {
            m_kontObject.KontObjectName = editKontObjectName.Text;
            m_kontObject.KontObjectDirect = editKontObjectDirect.SelectedItem == null ? 0 : (Int32)((Utils.ListItemValue)editKontObjectDirect.SelectedItem).Value;
            m_kontObject.KontObjectZPP = editKontObjectDirectZPP.SelectedItem==null?0:(Int32)((Utils.ListItemValue)editKontObjectDirectZPP.SelectedItem).Value;            
            m_kontObject.KontObjectTelefon = editKontObjectTelefon.Text;
            m_kontObject.KontObjectOKVED = editKontObjectOKVED.SelectItemID()==null?"":(String)editKontObjectOKVED.SelectItemID();
            m_kontObject.KontObjectPostIndex = editKontObjectPostIndex.Text;            
            m_kontObject.KontObjectRegion = editKontObjectRegion.Text;
            m_kontObject.KontObjectRaionID = editKontObjectRaionID.SelectedItem == null ? 0 : (Int32)((Utils.ListItemValue)editKontObjectRaionID.SelectedItem).Value;            
            m_kontObject.KontObjectGorod = editKontObjectGorod.Text;
            m_kontObject.KontObjectNaspunkt = editKontObjectNaspunkt.Text;
            m_kontObject.KontObjectStreet = editKontObjectStreet.Text;
            m_kontObject.KontObjectDom = editKontObjectDom.Text;
            m_kontObject.KontObjectKorpus = editKontObjectKorpus.Text;
            m_kontObject.KontObjectKvart = editKontObjectKvart.Text;            
            m_kont.setKontObject(m_KontObjectID, m_kontObject);
            return true;
        }
        bool read()
        {            
            m_kontObject = m_kont.KontObjects[m_KontObjectID];
            editKontObjectName.Text = m_kontObject.KontObjectName;
            editKontObjectDirect.SelectedItem = new Utils.ListItemValue(m_KontDirect[m_kontObject.KontObjectDirect], m_kontObject.KontObjectDirect);
            editKontObjectDirectZPP.SelectedItem = new Utils.ListItemValue(m_KontDirectZPP[m_kontObject.KontObjectZPP], m_kontObject.KontObjectZPP);
            editKontObjectTelefon.Text = m_kontObject.KontObjectTelefon;
            editKontObjectOKVED.SelectItemID(m_kontObject.KontObjectOKVED);
            editKontObjectPostIndex.Text = m_kontObject.KontObjectPostIndex;
            editKontObjectRegion.Text=m_kontObject.KontObjectRegion;
            editKontObjectRaionID.SelectedItem = new Utils.ListItemValue(m_Raions[m_kontObject.KontObjectRaionID], m_kontObject.KontObjectRaionID);
            editKontObjectGorod.Text=m_kontObject.KontObjectGorod;
            editKontObjectNaspunkt.Text=m_kontObject.KontObjectNaspunkt;
            editKontObjectStreet.Text=m_kontObject.KontObjectStreet;
            editKontObjectDom.Text=m_kontObject.KontObjectDom;
            editKontObjectKorpus.Text=m_kontObject.KontObjectKorpus;
            editKontObjectKvart.Text=m_kontObject.KontObjectKvart;

            return true;
            
        }
        public KontObjectEditForm(Engine engine,Kont kont, Int32 KontObjectID)
        {            
            m_kont = kont;
            m_engine = engine;
            m_KontObjectID = KontObjectID;
            InitializeComponent();
            m_Raions = m_engine.Raions;
            m_KontDirect = m_engine.KontDirect;
            m_KontDirectZPP = m_engine.KontDirectZPP;
            m_OKVED = m_engine.Okved;
            // Авто дополнение регионов
            foreach (String S in Properties.Settings.Default.Regions)
                editKontObjectRegion.AutoCompleteCustomSource.Add(S);            
            foreach (KeyValuePair<Int32, String> I in m_KontDirect)
                editKontObjectDirect.Items.Add(new Utils.ListItemValue(I.Value, I.Key));
            foreach (KeyValuePair<Int32, String> I in m_KontDirectZPP)
                editKontObjectDirect.Items.Add(new Utils.ListItemValue(I.Value, I.Key));
            foreach (KeyValuePair<Int32, String> I in m_Raions)
                editKontObjectRaionID.Items.Add(new Utils.ListItemValue(I.Value, I.Key));
            foreach (KeyValuePair<Int32, Engine.TOkvedInfo> I in m_OKVED)
                editKontObjectOKVED.Add((m_OKVED.ContainsKey(I.Value.ParentOkvedID))?m_OKVED[I.Value.ParentOkvedID].OkvedName:"", I.Value.OkvedName, I.Value.OkvedName + " " + I.Value.OkvedTitle);
            editKontObjectOKVED.ShowTreeList();
            read();
        }
        private void Address_Change(object sender, EventArgs e)
        {
            showAddress.Text = Engine.getAddressString(
                editKontObjectPostIndex.Text,
                editKontObjectRegion.Text,
                editKontObjectRaionID.Text,
                editKontObjectGorod.Text,
                editKontObjectNaspunkt.Text,
                editKontObjectStreet.Text,
                editKontObjectDom.Text,
                editKontObjectKorpus.Text,
                editKontObjectKvart.Text);
            
        }
        private void KontObjectEdit_Load(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            save();
            Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}
